/*
 * ProtocoloControl.h
 *
 *  Created on: 23/10/2011
 *      Author: pablo
 */

#ifndef PROTOCOLOCONTROL_H_
#define PROTOCOLOCONTROL_H_

#include "Socket.h"
#include "ProtocoloControlException.h"

#define CODIGO_DETENER_SERVIDOR 'D'
#define CODIGO_DETENIDO_OK 'S'
#define CODIGO_DETENIDO_ERROR 'E'

class ProtocoloControl {
private:
	Socket& socket;
    char recibirCaracter();
    void enviarCaracter(char codigoDetener);
public:
    /*
     * Recibe como parametro una referencia a un socket ya conectado.
     */
	ProtocoloControl(Socket& sock);
	virtual ~ProtocoloControl();

	/*
	 * Envia una operación pidiendo que se detenga el servidor que tiene
	 * como controlador al socket indicado.
	 */
	void enviarOperacionDetenerServidor();

	/*
	 * Recibe una respuesta que indica si se detuvo con exito
	 * al servidor o no.
	 */
	void recibirRespuestaDetenido(bool *detenidoConExito);

	/*
	 * Envia una respuesta indicando si hubo exito o no en la
	 * detencion del servidor
	 */
	void enviarRespuestaDetenido(bool conExito);

	/*
	 * Recibe una respuesta que indica si hay que tener el
	 * servidor o no.
	 */
	void recibirOperacionDetener(bool *hayQueDetener);
};

#endif /* PROTOCOLOCONTROL_H_ */
